package main

import "fmt"
import "strconv"

func main(){

	fmt.Println("all in better")
}

// string的高位在前
// 这是一个基本操作，如何功能更快呢
func muli(a int, num string) string{
	num_arr :=make([]int,0)
	num_arr2:=make([]int,0)
	for i:=len(num);i>0;i--{
		// 普通函数无法省略第二个参数,map是特例
		n,_ := strconv.Atoi(num[i-1:i])
		num_arr = append(num_arr,n)
	}
	r:=0
	for i:=0;i<len(num_arr);i++{
		n:=num_arr[i] * a + r
		num_arr2 = append(num_arr2,n%10)
		r = n / 10
	}
	num2 :=""
	for i:=0;i<len(num_arr2);i++{
		num2 +=strconv.Itoa(num_arr2[len(num_arr2)-i-1])
	}
	return num2
}
func muli2( a int, num string) string{
	num2:=""
	num_arr :=make([]int,len(num))
	num2_arr:=make([]int,len(num)+1)
	for i:=0;i<len(num);i++{
		n,_:=strconv.Atoi(num[len(num)-i-1:len(num)-i])
		num_arr[i] = n
	}
	r:=0
	for i:=0;i<len(num);i++{
		sum := num_arr[i]*a + r
		num2_arr[i]=sum % 10
		r = sum /10
	}
	num2_arr[len(num2_arr)-1] = r

	// 数组表示方法
	for i:=0;i<len(num2_arr);i++{
		num2 +=strconv.Itoa(num2_arr[len(num2_arr)-i-1])
	}

	// 去掉前面非零的字符
	i:=0
	for ;i<len(num2);i++{
		if num2[i:i+1] != "0"{
			break	
		}
	}
	return num2[i:]
}

